FlexGrid for WPF 帮助文档
填充该Grid

在向应用程序添加了C1FlexGrid之后,像大多数的其他Grid产品一样,您可以通过ItemsSource属性填充该Grid。

ItemsSource属性需要传入一个实现了IEnumerable 接口的对象,但是在大多数情况下,您将使用更高层次的,实现了ICollectionView 接口的对象。ICollectoinView接口是Silverlight以及WPF主要的数据绑定接口(在WinForms平台下,该角色由IBindingList接口扮演)。
ICollectionView是一个丰富的接口。除了枚举数据项,它还同时提供了排序、过滤、分页、分组以及Currency管理的服务。

Silverlight提供了一个实现ICollectionView接口PagedCollectionView 类。PagedCollectionView的构造函数接受一个IEnumerable对象作为参数,并自动提供所有的ICollectionView服务。WPF提供类似的类型,比方说ListCollectionView。

例如,为了在一个C1FlexGrid Silverlight应用程序中显示一个客户对象的列表,请使用如下所示代码:

C#
拷贝代码
List<Customer> list = GetCustomerList();
PagedCollectionView view = new PagedCollectionView(list);
_flexGrid.ItemsSource = view;

您也可以直接将grid绑定到客户列表。但是绑定到一个ICollectionView通常是一个较好的主意,因为它为应用程序保留了大量的数据配置相关信息,这些信息可以跨控件共享。

如果多个控件绑定到同一个ICollectionView对象,则它们将展示同样的视图。在一个控件中选择一个项目会自动更新所有其他绑定控件中的选择。过滤,分组,或排序,也被所有的控件绑定到相同的视图中。

上面的代码会导致Grid扫描数据源,并为每一个数据源中的项的公共属性生成列。您可以通过代码自定义这些自动生成的列。或者您可以干脆禁用自动生成列的功能,通过代码或者XAML自己生成这些列。

例如,以下XAML禁用了自动列生成并手动通过XAML指定列:

C1FlexGrid XAML
拷贝代码
<!-- create columns on a C1FlexGrid -->
<fg:C1FlexGrid x:Name="_flexiTunes"
     AutoGenerateColumns="False" >
   <fg:C1FlexGrid.Columns>
     <fg:Column Binding="{Binding Name}" Header="Title"
         AllowDragging="False" Width="300"/>
     <fg:Column Binding="{Binding Duration}"
         HorizontalAlignment="Right" />
     <fg:Column Binding="{Binding Size}"
         HorizontalAlignment="Right" />
     <fg:Column Binding="{Binding Rating}" Width="200"
         HorizontalAlignment ="Center" />
   </fg:C1FlexGrid.Columns>
</fg:C1FlexGrid>

这和您在Microsoft DataGrid 或者最初的ComponentOne DataGrid控件中完成相同的任务所需要的XAML类似:

DataGrid XAML
拷贝代码
<!-- create columns on an MSDataGrid (or C1DataGrid) -->
<ms:DataGrid Name="_msSongs"
     AutoGenerateColumns="False" >
   <ms:DataGrid.Columns>
     <ms:DataGridTextColumn Binding="{Binding Name}" Header="Title"
         CanUserReorder="False" Width="300" />
     <ms:DataGridTextColumn Binding="{Binding Duration}" />
     <ms:DataGridTextColumn Binding="{Binding Size}" />
     <ms:DataGridTextColumn Binding="{Binding Rating}" Width="200" />
   </ms:DataGrid.Columns>
</ms:DataGrid>

正如你所看到的,语法是几乎完全相同的。注意,您可以将此绑定做为访问Grid的列集合的索引。例如,如果您希望通过代码将“Rating”列的宽度变为300像素,则可以这样添加代码:

C#
拷贝代码
_flexiTunes.Columns["Rating"].Width = new GridLength(300);

这是C1FlexGrid 用户最熟悉的语法。当您使用控件的WinForms版本时,这些命令也完全相同。

查看其它

 

 


产品网站:http://www.gcpowertools.com.cn  |  咨询热线:4006576008   |   ©2015 西安葡萄城